iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Kubernetes

從零到一: 使用Spring Boot、Kubernetes 和 Istio實現微服務架構系列 第 17

Day 17: 使用Spring Boot、Kubernetes 和 Istio實現微服務架構 - Docker-Compose 架設 spring boot服務

  • 分享至 

  • xImage
  •  

在 Spring Boot 應用程式中使用 docker-compose 將應用程式容器化是一個很方便的方式,尤其是當你需要和其他服務一起運行,例如資料庫。以下是一個基本的 docker-compose.yml 範例,搭配一個 Spring Boot 應用和一個 MySQL 資料庫。

步驟一:準備 Dockerfile
首先,你需要在 Spring Boot 專案中準備一個 Dockerfile,例如:

使用一個 Java 影像作為基礎

FROM openjdk:17-jdk-slim

設定應用程式工作目錄

WORKDIR /app

將 Jar 檔案拷貝到容器中

COPY target/your-app.jar /app/your-app.jar

開放應用的端口

EXPOSE 8080

設定啟動命令

ENTRYPOINT ["java", "-jar", "/app/your-app.jar"]

步驟二:撰寫 docker-compose.yml
然後,你可以撰寫一個 docker-compose.yml 文件來定義 Spring Boot 應用和 MySQL 的服務。

version: '3'
services:
  app:
    image: your-app-image-name
    build:
      context: .
      dockerfile: Dockerfile
    container_name: spring-boot-app
    ports:
      - "8080:8080"
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/your_db
      SPRING_DATASOURCE_USERNAME: user
      SPRING_DATASOURCE_PASSWORD: password
    depends_on:
      - db

  db:
    image: mysql:8.0
    container_name: mysql-db
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: your_db
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

這個 docker-compose.yml 文件包含:

app 服務: 這是你的 Spring Boot 應用程式。它會透過 Dockerfile 建立映像,並且將本地端的 8080 端口映射到容器中的 8080 端口。

db 服務: 使用 MySQL 資料庫映像,並且將設定一些環境變數來設定資料庫名稱、使用者和密碼。它將資料庫的 3306 端口映射到本地端。

depends_on: 確保應用在 MySQL 資料庫啟動後才會開始。
步驟三:啟動 Docker Compose
在專案根目錄中運行以下命令來啟動服務:

docker-compose up --build

上一篇
Day 16: 使用Spring Boot、Kubernetes 和 Istio實現微服務架構 - Docker Compose是什麼?
下一篇
Day 18 : 使用Spring Boot、Kubernetes 和 Istio實現微服務架構 - Docker Hub 簡介
系列文
從零到一: 使用Spring Boot、Kubernetes 和 Istio實現微服務架構30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言